home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Gold Collection / Software Vault - The Gold Collection (American Databankers) (1993).ISO / cdr57 / cordin.zip / CORDINE.C < prev    next >
C/C++ Source or Header  |  1993-06-01  |  8KB  |  372 lines

  1. /* cordine.c ... freeware button accordion dialog example
  2.  * jack j. woehr p.o. box 51, golden co 80402-0051
  3.  * jax@well.sf.ca.us JAX on GEnie 72203.1320@compuserve.com
  4.  * SYSOP, RealTime Control & Forth Board [RCFB] (303) 278-0364
  5.  */
  6.  
  7. #include <windows.h>
  8. #include "cordine.h"
  9.  
  10. HINSTANCE hInst;
  11.  
  12. char szAppName[] = "Cordine";
  13.  
  14. int APIENTRY WinMain(
  15.     HINSTANCE hInstance,
  16.         HINSTANCE hPrevInstance,
  17.     LPSTR lpCmdLine,
  18.     int nCmdShow)
  19. {
  20.  
  21.     MSG msg;
  22. //    HANDLE hAccelTable;
  23.  
  24.     if (!hPrevInstance) {
  25.             if (!InitApplication(hInstance)) {
  26.             return (FALSE);
  27.         }
  28.     }
  29.  
  30.     if (!InitInstance(hInstance, nCmdShow)) {
  31.         return (FALSE);
  32.     }
  33.  
  34.     while (GetMessage(&msg, NULL, 0, 0))  
  35.     {
  36.         TranslateMessage(&msg);
  37.         DispatchMessage(&msg);
  38.     }
  39.  
  40.     return (msg.wParam);
  41.     lpCmdLine;
  42. }
  43.  
  44. BOOL InitApplication(HINSTANCE hInstance)
  45. {
  46.     WNDCLASS  wc;
  47.     wc.style         = CS_HREDRAW | CS_VREDRAW;
  48.     wc.lpfnWndProc   = (WNDPROC)WndProc; 
  49.     wc.cbClsExtra    = 0; 
  50.     wc.cbWndExtra    = 0; 
  51.     wc.hInstance     = hInstance; 
  52.     wc.hIcon         = LoadIcon(hInstance,"Cordine");
  53.     wc.hCursor       = LoadCursor(NULL, IDC_ARROW);
  54.     wc.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
  55.     wc.lpszMenuName  = NULL;
  56.     wc.lpszClassName = szAppName;
  57.  
  58.     return (RegisterClass(&wc));
  59. }
  60.  
  61. BOOL InitInstance( HINSTANCE hInstance, int nCmdShow)
  62. {
  63.     HWND            hWnd; 
  64.     hInst = hInstance;
  65.  
  66.     hWnd = CreateWindow(
  67.         szAppName,
  68.         szAppName,
  69.         WS_OVERLAPPEDWINDOW,
  70.         CW_USEDEFAULT, 0, CW_USEDEFAULT, 0,
  71.         NULL,
  72.         NULL,
  73.         hInstance,
  74.         NULL
  75.     );
  76.  
  77.     if (!hWnd) {
  78.         return (FALSE);
  79.     }
  80.  
  81.     ShowWindow(hWnd, SW_MINIMIZE);
  82.     UpdateWindow(hWnd);
  83.     return (TRUE);
  84. }
  85.  
  86. LRESULT CALLBACK WndProc( HWND hWnd, UINT message, WPARAM uParam, LPARAM lParam)
  87. {
  88.     switch (message)
  89.     {
  90.         case WM_DESTROY:
  91.             PostQuitMessage(0);
  92.             break;
  93.  
  94.         case WM_SYSCOMMAND:
  95.             switch (0xfff0 & uParam)
  96.             {
  97.                 case SC_MAXIMIZE:
  98.                 DialogBox(hInst, MAKEINTRESOURCE (100), hWnd, (DLGPROC)CordineProc);
  99.                 return (0);
  100.  
  101.                 case SC_RESTORE:
  102.                 DialogBox(hInst, MAKEINTRESOURCE (100), hWnd, (DLGPROC)CordineProc);
  103.                 return (0);
  104.             }
  105.  
  106.         default:
  107.             return (DefWindowProc(hWnd, message, uParam, lParam));
  108.     }
  109.     return (0);
  110. }
  111.  
  112. LRESULT CALLBACK CordineProc ( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  113. {
  114.     HWND idCntrl;
  115.     HMENU sysMenu;
  116.  
  117.     switch (message)
  118.     {
  119.         case WM_INITDIALOG:
  120.             if (idCntrl = GetDlgItem (hDlg, IDM_DURATION))
  121.             {
  122.             SetScrollRange (idCntrl, SB_CTL, 50, 500, FALSE) ;
  123.             // We allow a tone duration of 50 mS to 500 ms
  124.             SetScrollPos (idCntrl, SB_CTL, duration, TRUE) ;
  125.             }
  126.             sysMenu = GetSystemMenu (hDlg, FALSE);
  127.             AppendMenu (sysMenu, MF_STRING|MF_ENABLED, IDMSC_HELP, "&Help");
  128.             AppendMenu (sysMenu, MF_STRING|MF_ENABLED, IDMSC_ABOUT, "&About");
  129.             return FALSE;
  130.  
  131.         case WM_COMMAND:
  132.             switch (wParam)
  133.             {
  134.                 case IDM_LO_C:
  135.                     Beep ((DWORD) TONE_LO_C, (DWORD) duration);
  136.                     return FALSE;
  137.  
  138.                 case IDM_LO_G:
  139.                     Beep ((DWORD) TONE_LO_G, (DWORD) duration);
  140.                     return FALSE;
  141.  
  142.                 case IDM_C:
  143.                     Beep ((DWORD) TONE_C, (DWORD) duration);
  144.                     return FALSE;
  145.  
  146.                 case IDM_G:
  147.                     Beep ((DWORD) TONE_G, (DWORD) duration);
  148.                     return FALSE;
  149.  
  150.                 case IDM_LO_D:
  151.                     Beep ((DWORD) TONE_LO_D, (DWORD) duration);
  152.                     return FALSE;
  153.  
  154.                 case IDM_LO_A:
  155.                     Beep ((DWORD) TONE_LO_A, (DWORD) duration);
  156.                     return FALSE;
  157.  
  158.                 case IDM_D:
  159.                     Beep ((DWORD) TONE_D, (DWORD) duration);
  160.                     return FALSE;
  161.  
  162.                 case IDM_A:
  163.                     Beep ((DWORD) TONE_A, (DWORD) duration);
  164.                     return FALSE;
  165.  
  166.                 case IDM_LO_E:
  167.                     Beep ((DWORD) TONE_LO_E, (DWORD) duration);
  168.                     return FALSE;
  169.  
  170.                 case IDM_LO_BFLAT:
  171.                     Beep ((DWORD) TONE_LO_BFLAT, (DWORD) duration);
  172.                     return FALSE;
  173.  
  174.                 case IDM_E:
  175.                     Beep ((DWORD) TONE_E, (DWORD) duration);
  176.                     return FALSE;
  177.  
  178.                 case IDM_BFLAT:
  179.                     Beep ((DWORD) TONE_BFLAT, (DWORD) duration);
  180.                     return FALSE;
  181.  
  182.                 case IDM_LO_F:
  183.                     Beep ((DWORD) TONE_LO_F, (DWORD) duration);
  184.                     return FALSE;
  185.  
  186.                 case IDM_LO_B:
  187.                     Beep ((DWORD) TONE_LO_B, (DWORD) duration);
  188.                     return FALSE;
  189.  
  190.                 case IDM_F:
  191.                     Beep ((DWORD) TONE_F, (DWORD) duration);
  192.                     return FALSE;
  193.  
  194.                 case IDM_B:
  195.                     Beep ((DWORD) TONE_B, (DWORD) duration);
  196.                     return FALSE;
  197.  
  198.                 case IDM_HI_C:
  199.                     Beep ((DWORD) TONE_HI_C, (DWORD) duration);
  200.                     return FALSE;
  201.  
  202.                 case IDM_HI_G:
  203.                     Beep ((DWORD) TONE_HI_G, (DWORD) duration);
  204.                     return FALSE;
  205.  
  206.                 case IDM_HI_D:
  207.                     Beep ((DWORD) TONE_HI_D, (DWORD) duration);
  208.                     return FALSE;
  209.  
  210.                 case IDM_HI_A:
  211.                     Beep ((DWORD) TONE_HI_A, (DWORD) duration);
  212.                     return FALSE;
  213.  
  214.                 case IDM_HI_E:
  215.                     Beep ((DWORD) TONE_HI_E, (DWORD) duration);
  216.                     return FALSE;
  217.  
  218.                 case IDM_HI_BFLAT:
  219.                     Beep ((DWORD) TONE_HI_BFLAT, (DWORD) duration);
  220.                     return FALSE;
  221.  
  222.                 case IDM_HI_F:
  223.                     Beep ((DWORD) TONE_HI_F, (DWORD) duration);
  224.                     return FALSE;
  225.  
  226.                 case IDM_HI_B:
  227.                     Beep ((DWORD) TONE_HI_B, (DWORD) duration);
  228.                     return FALSE;
  229.                 
  230.                 default:
  231.                     return FALSE;
  232.             }
  233.  
  234.         case WM_HSCROLL :
  235.             switch (LOWORD (wParam))
  236.             {
  237.                 case SB_BOTTOM :    // Scroll to bottom.
  238.                     duration = 500 ;
  239.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  240.                     return 0 ;
  241.  
  242.                 case SB_LINEDOWN :    // Scroll one line down.
  243.                     duration = min (500, duration + 5) ;
  244.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  245.                     return 0 ;
  246.  
  247.                 case SB_LINEUP :    // Scroll one line up.
  248.                     duration = max (50, duration -5) ;
  249.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  250.                     return 0 ;
  251.  
  252.                 case SB_PAGEDOWN :    // Scroll one page down.
  253.                     duration = min (500, duration + 50) ;
  254.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  255.                     return 0 ;
  256.  
  257.                 case SB_PAGEUP :    // Scroll one page up. 
  258.                      duration = max (50, duration - 50) ;
  259.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  260.                     return 0 ;
  261.  
  262.                 case SB_THUMBPOSITION :
  263.                     duration = HIWORD (wParam) ;
  264.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  265.                     return 0 ;
  266.  
  267.                 case SB_THUMBTRACK :
  268.                     duration = HIWORD (wParam) ;
  269.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  270.                     return 0 ;
  271.  
  272.                 case SB_TOP:    // Scroll to top. 
  273.                     duration = 50 ;
  274.                     SetScrollPos ( (HWND) (lParam), SB_CTL, duration, TRUE) ;
  275.                     return 0 ;
  276.  
  277.                 default:
  278.                     return FALSE ;
  279.             }
  280.  
  281.         case WM_SYSCOMMAND :
  282.             switch (wParam)
  283.             {
  284.                 case SC_CLOSE:
  285.                     EndDialog (hDlg,TRUE);
  286.                     return TRUE;
  287.  
  288.                 case IDMSC_ABOUT:
  289.                     DialogBox (hInst, MAKEINTRESOURCE (300), hDlg, (DLGPROC)AboutProc);
  290.                     return TRUE;
  291.  
  292.                 case IDMSC_HELP:
  293.                     DialogBox (hInst, MAKEINTRESOURCE (500), hDlg, (DLGPROC)HelpProc);
  294.                     return TRUE;
  295.  
  296.                 default:
  297.                     return FALSE ;
  298.             }
  299.     }
  300.     return (FALSE);
  301.  
  302.     lParam;
  303. }
  304.  
  305. LRESULT CALLBACK AboutProc ( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  306. {
  307.     switch (message)
  308.     {
  309.         case WM_INITDIALOG:
  310.             Beep ( (DWORD) 55, (DWORD) 500);
  311.             return FALSE;
  312.  
  313.         case WM_COMMAND:
  314.             switch (wParam)
  315.             {
  316.                 case ABOUT_OK1:
  317.                     EndDialog (hDlg,TRUE);
  318.                     return FALSE;
  319.  
  320.                 case ABOUT_OK2:
  321.                     EndDialog (hDlg,TRUE);
  322.                     return FALSE;
  323.  
  324.                 default:
  325.                     return FALSE;
  326.             }
  327.  
  328.         case WM_SYSCOMMAND :
  329.             switch (wParam)
  330.             {
  331.                 case SC_CLOSE:
  332.                     EndDialog (hDlg,TRUE);
  333.                     return TRUE;
  334.  
  335.                 default:
  336.                     return FALSE ;
  337.             }
  338.         default:
  339.             return FALSE;
  340.     }
  341. }
  342.  
  343. LRESULT CALLBACK HelpProc ( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
  344. {
  345.     switch (message)
  346.     {
  347.         case WM_COMMAND:
  348.             switch (wParam)
  349.             {
  350.                 case IDMSC_BAYOU:
  351.                     EndDialog (hDlg,TRUE);
  352.                     return FALSE;
  353.  
  354.                 default:
  355.                     return FALSE;
  356.             }
  357.  
  358.         case WM_SYSCOMMAND :
  359.             switch (wParam)
  360.             {
  361.                 case SC_CLOSE:
  362.                     EndDialog (hDlg,TRUE);
  363.                     return TRUE;
  364.  
  365.                 default:
  366.                     return FALSE ;
  367.             }
  368.         default:
  369.             return FALSE;
  370.     }
  371. }
  372.